/*
Date:20210406
key：第一次遍历，重复的标记为-1.第二次两个循环 第一个循环遍历到-1或尽头停止，第二个循环，-1之后第一个不是-1的和原-1位置交换，并记录这种次数，交换了几次就有几个-1在尾巴，就pop几次。
*/

class Solution {
public:
    int removeDuplicates(vector<int>& nums) 
    {
        //stack<int>S;
        if(nums.size()==0)
        {
            return 0;
        }
        //S.push(nums[0]);
        int a=nums[0];
        int flag=0;
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]==a)
            {
                if(flag>0)
                {
                    nums.erase(nums.begin()+i);
                    i--;
                    continue;
                }
                flag++;
            }
            else
            {
                a=nums[i];
                flag=0;
            }
        }
        return nums.size();
    }
};
/*快慢指针，顶级理解。
class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length <= 2) return nums.length;
        
        int index = 2;
        for(int i = 2; i < nums.length; i++){
            if(nums[i] != nums[index-2])
                nums[index++] = nums[i];
        }
        
        return index;
    }
}
*/